package com.ruoyi.business.service;

import java.util.List;

import com.ruoyi.business.POJO.CopyAcAssetInfoPOJO;
import com.ruoyi.business.VO.AcAssetInfoVO;
import com.ruoyi.business.VO.AcAssetLeaseInfoVO;
import com.ruoyi.business.domain.AcAssetInfo;
import com.ruoyi.system.domain.AcWorkOrder;

/**
 * 资产台账管理Service接口
 *
 * @author ruoyi
 * @date 2025-01-15
 */
public interface IAcAssetInfoService
{
    /**
     * 查询资产台账管理
     *
     * @param assetId 资产台账管理主键
     * @return 资产台账管理
     */
    public AcAssetInfo selectAcAssetInfoByAssetId(Long assetId);

    /**
     * 查询资产台账管理列表
     *
     * @param acAssetInfo 资产台账管理
     * @return 资产台账管理集合
     */
    public List<AcAssetInfo> selectAcAssetInfoList(AcAssetInfo acAssetInfo);


    public List<AcAssetInfo> selectAcAssetInfoIoc(AcAssetInfo acAssetInfo);

    /**
     * 新增资产台账管理
     *
     * @param acAssetInfo 资产台账管理
     * @return 结果
     */
    public int insertAcAssetInfo(AcAssetInfo acAssetInfo);

    /**
     * 修改资产台账管理
     *
     * @param acAssetInfo 资产台账管理
     * @return 结果
     */
    public int updateAcAssetInfo(AcAssetInfo acAssetInfo);

    /**
     * 批量删除资产台账管理
     *
     * @param assetIds 需要删除的资产台账管理主键集合
     * @return 结果
     */
    public int deleteAcAssetInfoByAssetIds(Long[] assetIds);

    /**
     * 删除资产台账管理信息
     *
     * @param assetId 资产台账管理主键
     * @return 结果
     */
    public int deleteAcAssetInfoByAssetId(Long assetId);


    // ****************************************************************************
    /**
     * 校验和新增资产信息
     * @param acAssetInfo 资产信息
     * @return 结果
     * **/
    public int checkAndInsertAssetInfo(AcAssetInfo acAssetInfo);

    /**
     * 复制和更新资产信息
     * @param copyAcAssetInfoPOJO 新资产信息与复制对象的信息
     * @return 结果
     * **/
    public int copyAndUpdateAssetInfo(AcAssetInfo copyAcAssetInfoPOJO);
//    public int copyAndUpdateAssetInfo(CopyAcAssetInfoPOJO copyAcAssetInfoPOJO);


    /**
     * 资产详情-资产详情
     * **/
    public AcAssetInfoVO selectAssetInfoByAssetId(Long assetId);

    /**
     * 资产详情-资产在租详情
     * **/
    public AcAssetLeaseInfoVO selectAssetLeaseInfoByAssetId(Long assetId);



    public List<AcWorkOrder> selectAssetFixByAssetId (Long assetId);

    public List<AcWorkOrder> selectAssetCheckByAssetId (Long assetId);

    /**
     * 资产详情-资产租赁历史详情
     * **/
    public List<AcAssetLeaseInfoVO> selectAssetHistoryLeaseInfoByAssetId(Long assetId);

    /**
     * 根据资产状态，检查并删除资产
     * **/
    public int checkAndDeleteAcAssetInfo(Long[] assetIds);

    /**
     * 资产状态定时器
     * **/
    public void updateAcAssetInfoByAssetStatus();

    List<AcAssetInfo> selectAssetNum();

    List<AcAssetInfo> selectAssetLocation();

    List<AcAssetInfo> selectAssetStatus();

    List<AcAssetInfo> selectAssetType();

    List<AcAssetInfo> selectAssetProperty();

    List<AcAssetInfo> selectAssetBookValue();

    List<AcAssetInfo> selectAssetRentNum();

    List<AcAssetInfo> selectAssetChangeType();

    List<AcAssetInfo> selectAssetTop5();
}
